/*
 * @Author: zhang zhijiang 2824735304@qq.com
 * @Date: 2025-04-22 21:18:22
 * @LastEditors: zhang zhijiang 2824735304@qq.com
 * @LastEditTime: 2025-04-22 21:32:55
 * @FilePath: /linux/test_4_21/Deamon.hpp
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#include <iostream>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
const std::string nullbox = "dev/null";
void Daemon(const std::string& cd = "")
{
    // 1. 屏蔽某些信号，如暂停等
    signal(SIGCHLD, SIG_IGN);
    signal(SIGSTOP, SIG_IGN);
    signal(SIGPIPE, SIG_IGN);
    // 2.设置自己为session
    if(fork()>0) exit(0); 
    setsid();
    //3. 切换目录
    if(!cd.empty())
    chdir(cd.c_str());
    //4.将内容都重定向到垃圾箱里面
    int fd = open(nullbox.c_str(),O_RDWR);
    if(fd>0)
    {
        dup2(fd,0);
        dup2(fd,1);
        dup2(fd,2);
        close(fd);
    }

}